/*     */ package dm.jdbc.dbaccess;
/*     */ 
/*     */ import dm.jdbc.driver.DmdbConnection_bs;
/*     */ import java.io.IOException;
/*     */ import java.net.Socket;
/*     */ import java.net.SocketException;
/*     */ import java.net.UnknownHostException;
/*     */ import java.security.PrivateKey;
/*     */ import java.sql.SQLException;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ public class DbAccess
/*     */ {
/*  33 */   private DbPureAccess m_accessPrimary = null;
/*     */   
/*  35 */   private DbPureAccess m_accessStandby = null;
/*     */   
/*  37 */   private DmdbConnection_bs m_connInner = null;
/*     */   
/*  39 */   private boolean lastExecToStandby = false;
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public DbAccess(DmdbConnection_bs conn)
/*     */     throws IOException
/*     */   {
/*  50 */     this.m_connInner = conn;
/*  51 */     this.m_accessPrimary = new DbPureAccess(conn);
/*     */   }
/*     */   
/*     */   public DbPureAccess getAccessPrimary()
/*     */   {
/*  56 */     return this.m_accessPrimary;
/*     */   }
/*     */   
/*     */   public DbPureAccess getAccessStandby()
/*     */   {
/*  61 */     return this.m_accessStandby;
/*     */   }
/*     */   
/*     */   public void addStandby() throws IOException
/*     */   {
/*  66 */     this.m_accessStandby = new DbPureAccess(this.m_connInner, this.m_connInner.getStandbyHost(), 
/*  67 */       this.m_connInner.getStandbyPort());
/*     */   }
/*     */   
/*     */   public synchronized DmMsgRecv access(DmMsgSend sendMsg)
/*     */     throws SQLException, IOException
/*     */   {
/*  73 */     int type = 1;
/*  74 */     DmMsgRecv recvMsg = null;
/*  75 */     DmMsgRecv standbyRecvMsg = null;
/*  76 */     int sqlcode = 0;
/*     */     
/*  78 */     if (this.m_connInner.checkConnToStandby()) {
/*  79 */       type = 0;
/*     */     }
/*     */     try
/*     */     {
/*  83 */       for (int i = 0; i < 2; i++)
/*     */       {
/*     */ 
/*  86 */         if ((this.lastExecToStandby) && (type == 1))
/*     */         {
/*     */           try
/*     */           {
/*  90 */             DmMsgSend msg = new DmMsgSend();
/*  91 */             Request_Response.req_commit(msg);
/*  92 */             accessStandby(msg);
/*     */           }
/*     */           catch (SQLException localSQLException) {}catch (IOException localIOException1) {}
/*     */         }
/*     */         
/*     */ 
/*     */ 
/*     */ 
/* 100 */         switch (type)
/*     */         {
/*     */         case 1: 
/* 103 */           recvMsg = accessPrimary(sendMsg);
/* 104 */           break;
/*     */         case 0: 
/* 106 */           standbyRecvMsg = accessStandby(sendMsg);
/* 107 */           sqlcode = standbyRecvMsg.res_get_sqlcode();
/* 108 */           if ((sqlcode == 59526) || 
/* 109 */             (sqlcode == 59529))
/*     */           {
/* 111 */             close();
/* 112 */             DBError.throwSQLException(6001);
/*     */           }
/*     */           break;
/*     */         }
/*     */         
/* 117 */         if ((i != 0) || (!this.m_connInner.checkHasStandby()))
/*     */           break;
/* 119 */         if ((type == 0) && (sqlcode < 0))
/*     */         {
/*     */ 
/* 122 */           this.m_connInner.setTransReadonly(false);
/* 123 */           type = 1;
/*     */ 
/*     */         }
/*     */         else
/*     */         {
/* 128 */           int ret_type = type == 0 ? standbyRecvMsg.res_execute_get_ret_type() : recvMsg
/* 129 */             .res_execute_get_ret_type();
/* 130 */           if ((ret_type != 165) && (ret_type != 166) && 
/* 131 */             (ret_type != 147) && (ret_type != 148) && 
/* 132 */             (ret_type != 153))
/*     */             break;
/* 134 */           type = type == 0 ? 1 : 0;
/*     */         }
/*     */         
/*     */       }
/*     */       
/*     */ 
/*     */     }
/*     */     catch (IOException ioe)
/*     */     {
/*     */ 
/* 144 */       if (this.m_connInner.checkHasStandby())
/*     */       {
/* 146 */         close();
/*     */         
/* 148 */         DBError.throwSQLException(6001);
/*     */       }
/*     */       else
/*     */       {
/* 152 */         throw ioe;
/*     */       }
/*     */     }
/*     */     
/* 156 */     return recvMsg != null ? recvMsg : standbyRecvMsg;
/*     */   }
/*     */   
/*     */   public synchronized DmMsgRecv accessPrimary(DmMsgSend sendMsg) throws SQLException, IOException
/*     */   {
/* 161 */     DmMsgRecv recv = this.m_accessPrimary.access(sendMsg);
/* 162 */     recv.setFromStandby(false);
/* 163 */     this.lastExecToStandby = false;
/* 164 */     return recv;
/*     */   }
/*     */   
/*     */   public synchronized DmMsgRecv accessStandby(DmMsgSend sendMsg) throws SQLException, IOException
/*     */   {
/* 169 */     if (this.m_accessStandby == null) {
/* 170 */       return null;
/*     */     }
/* 172 */     DmMsgRecv recv = this.m_accessStandby.access(sendMsg);
/* 173 */     recv.setFromStandby(true);
/*     */     
/* 175 */     this.lastExecToStandby = true;
/* 176 */     return recv;
/*     */   }
/*     */   
/*     */   public void setCompress(int comprMsg)
/*     */   {
/* 181 */     this.m_accessPrimary.setCompress(comprMsg);
/* 182 */     if (this.m_accessStandby != null) {
/* 183 */       this.m_accessStandby.setCompress(comprMsg);
/*     */     }
/*     */   }
/*     */   
/*     */   public void tryEnableSSL(boolean useSSLSocket) throws IOException, SQLException {
/* 188 */     this.m_accessPrimary.tryEnableSSL(useSSLSocket);
/* 189 */     if (this.m_accessStandby != null) {
/* 190 */       this.m_accessStandby.tryEnableSSL(useSSLSocket);
/*     */     }
/*     */   }
/*     */   
/*     */   public AuthInfo getAuthInfo() {
/* 195 */     return this.m_accessPrimary.getAuthInfo();
/*     */   }
/*     */   
/*     */   public void reset() throws SQLException
/*     */   {
/* 200 */     this.m_accessPrimary.reset();
/* 201 */     if (this.m_accessStandby != null) {
/* 202 */       this.m_accessStandby.reset();
/*     */     }
/*     */   }
/*     */   
/*     */   public void close() {
/* 207 */     this.m_accessPrimary.close();
/* 208 */     if (this.m_accessStandby != null) {
/* 209 */       this.m_accessStandby.close();
/*     */     }
/*     */   }
/*     */   
/*     */   public AuthInfo getAuthInfo(String kerberosUser, String loginPath, int kerberosAuth) throws SQLException {
/* 214 */     return this.m_accessPrimary.getAuthInfo(kerberosUser, loginPath, kerberosAuth);
/*     */   }
/*     */   
/*     */   public int getNetPacketSize()
/*     */   {
/* 219 */     return this.m_accessPrimary.getNetPacketSize();
/*     */   }
/*     */   
/*     */   public void setSoTimeout(int socketTimeout) throws SocketException
/*     */   {
/* 224 */     this.m_accessPrimary.getSocket().setSoTimeout(socketTimeout);
/* 225 */     if (this.m_accessStandby != null) {
/* 226 */       this.m_accessStandby.getSocket().setSoTimeout(socketTimeout);
/*     */     }
/*     */   }
/*     */   
/*     */   public void setSocketInfo(String hostName, String portNumber) throws UnknownHostException, IOException {
/* 231 */     this.m_accessPrimary.setSocketInfo(hostName, portNumber);
/*     */   }
/*     */   
/*     */   public byte[] getClientPubKey(boolean isPrimary) throws SQLException
/*     */   {
/* 236 */     if (isPrimary) {
/* 237 */       return this.m_accessPrimary.getClientPubKey();
/*     */     }
/* 239 */     return this.m_accessStandby.getClientPubKey();
/*     */   }
/*     */   
/*     */   public PrivateKey getClientPrivKey(boolean isPrimary)
/*     */     throws SQLException
/*     */   {
/* 245 */     if (isPrimary) {
/* 246 */       return this.m_accessPrimary.getClientPrivKey();
/*     */     }
/* 248 */     return this.m_accessStandby.getClientPrivKey();
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public final void genMsgCiphers(boolean isPrimary, int msgCipherType, byte[] tempSessionKey)
/*     */     throws SQLException
/*     */   {
/* 259 */     if (isPrimary) {
/* 260 */       this.m_accessPrimary.genMsgCiphers(msgCipherType, tempSessionKey);
/*     */     } else {
/* 262 */       this.m_accessStandby.genMsgCiphers(msgCipherType, tempSessionKey);
/*     */     }
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   protected byte[] symmetricEncrypto(boolean isPrimary, byte[] byteSource, int length, boolean gen_digest)
/*     */     throws SQLException
/*     */   {
/* 277 */     if (isPrimary) {
/* 278 */       return this.m_accessPrimary.symmetricEncrypto(byteSource, length, gen_digest);
/*     */     }
/* 280 */     return this.m_accessStandby.symmetricEncrypto(byteSource, length, gen_digest);
/*     */   }
/*     */   
/*     */   public void setMsgEncryptType(int msgEncryptType, boolean toPrimary)
/*     */   {
/* 285 */     if (toPrimary)
/*     */     {
/* 287 */       this.m_accessPrimary.setMsgEncryptType(msgEncryptType);
/*     */     }
/*     */     else
/*     */     {
/* 291 */       this.m_accessStandby.setMsgEncryptType(msgEncryptType);
/*     */     }
/*     */   }
/*     */ }


/* Location:              D:\Program Files\DBMS_20150813\jdbc\Dm7JdbcDriver17.jar!\dm\jdbc\dbaccess\DbAccess.class
 * Java compiler version: 2 (46.0)
 * JD-Core Version:       0.7.1
 */